iT邦幫忙

2025 iThome 鐵人賽

DAY 10
0

前言

在昨天天的內容裡,我們已經介紹了 Dense RetrievalSparse Retrieval,以及並透過 Hybrid Search 把兩者結合在一起,目的是讓檢索結果更加精準。
其中,我們使用Hybrid Search 後還採用了RRF (Reciprocal Rank Fusion),來重新排序,這其實是一種Rerank(重排序) ,今天我們就來深入討論這個關鍵的RAG技術。


🤔為什麼需要 Rerank?

先快速帶給大家基本概念,後面再深入討論技術實踐:

  • 初步檢索只是「粗篩」
    向量檢索或 BM25 檢索的主要目標是從大量的文件或段落中「快速找到相關候選文件」,重點是效率。

  • 語意理解進行排序
    Rerank 模型背後技術是進行「查詢與文件的語意關係」比較,使用更複雜的演算法達到目的,重點是相關性的精確度。

  • 效能與精度的折衷
    檢索階段負責快速找到關聯,Rerank 階段則負責產出更精確的相關度。


🧩Bi-Encoder vs. Cross-Encoder

所以我們可以理解到Retrieval的任務就是在處理相關性,而Bi-Encoder和Cross-Encoder這兩項技術,就是自然語言處理(NLP)裡面最主要用來處理相似度、排序這類型問題的演算法。

我們這邊就來深入了解一下Bi-Encoder和Cross-Encoder

https://ithelp.ithome.com.tw/upload/images/20250924/20178499y1JgemXSzo.png
圖片來源:
sentence transformer

1. Bi-Encoder

  • 運作原理
    查詢(Query)與文件(Document)分別編碼成向量,最後再計算兩者的相似度(例如 cosine similarity)。
  • 特點
    • 效率高:文件向量可離線預先計算,查詢進來時只需做一次編碼與相似度計算。
    • 可擴展性強:能支援大量文件的快速檢索,常搭配 ANN(如 FAISS、HNSW)。
    • 缺點:因為查詢與文件獨立編碼,可能無法捕捉到細粒度的語義交互。
  • 適用場景
    • 大規模檢索(search engine、FAQ 查詢)
    • 需要快速回應的任務(即時推薦系統)

2. Cross-Encoder

  • 運作原理
    將查詢與文件 拼接在一起,一次輸入到 Transformer 模型中。這樣模型能直接觀察查詢與文件內部的詞元交互,並輸出相關性分數。
  • 特點
    • 精度高:能捕捉到詞與詞之間的對應關係,排序效果通常優於 Bi-Encoder。
    • 缺點:計算速度慢,因為每一組「查詢–文件」都要重新跑一遍模型,無法提前預算。
  • 適用場景
    • 小規模候選文件的精排(例如對 Bi-Encoder 初步召回的前 100 個候選做排序)
    • 高精度需求的任務(例如問答系統的最佳答案選擇、重複問題檢測)

小結:

  • Bi-Encoder是計算兩個embedding vector的相似度,而這就是我們利用向量資料庫做查詢所發生的事情。
  • Cross-Encoder則是一個專門處理兩段文字相關性的Transformer base模型,因此運算更耗時但也更精確。

Bi-Encoder vs Cross-Encoder 對比表

特性 Bi-Encoder Cross-Encoder
運算方式 查詢與文件分別編碼,再比對相似度 查詢與文件拼接,一起輸入模型
效率 高,可處理百萬級文件 低,每組 pair 都要跑一次模型
精度 中等 高(能捕捉細粒度語義)
適用場景 初步檢索、大規模匹配 Rerank、需要高精度的小規模排序
典型流程 向量化 + ANN 搜索 精排前 10~100 文件

在實務應用中,常見做法是:

  1. Bi-EncoderHybrid Search 進行初步檢索(透過向量資料庫的檢索快速找到 Top-N 文件),這個N的數量可以比較大。
  2. 將這N份文件和Query組合並使用 Cross-Encoder 進行評分,並以此分數來 Rerank(Rerank model的任務)。

👉 先對大量資料做搜尋提高 效率,再針對第一輪過濾後的資料作篩選來確保了 答案品質


🔗Reranker的選擇

繁體中文 Reranker 的選擇 🇹🇼

如同先前提到embedding model必須要留意是否有支援中文,Reranker 模型一樣也是要選擇是能支援中文的,否則反而會越排越差。目前常見的 Reranker 多來自英文或簡體中文語料,如果只有支援純英文的就不要選擇了,整理幾項應注意的點:

  1. 多語言模型

    • 如果你的應用場景同時涵蓋繁體與簡體(甚至英文),建議使用多語言版本的 Reranker,例如 mBERT-based Cross-Encoderbge-reranker-large(多語版本)。
    • 優勢是語言覆蓋廣,缺點是繁體中文的效果可能不如針對中文微調的模型。
  2. 中文專用模型

    • BGE-Reranker 系列(如 BAAI/bge-reranker-large 已在中文語料上訓練,對繁體中文的支援性通常比純英文模型好。
    • 如果系統以中文為核心,建議優先考慮。
  3. 繁體中文微調

    • 如果資料以繁體中文為主(例如台灣金融文件、繁體客服紀錄),建議基於現有的中文 Reranker 進行 繁體語料微調
    • 這樣能提升對專有名詞、在地用語(如「股利」 vs.「紅利」)的判斷準確度。

👉 建議策略

  • 一般應用可先使用 bge-reranker-large 作為 baseline。
  • 若需要高精度,最好針對你的場景自行製作 繁體中文資料集 再做微調,以獲得最佳效果。

📊如何評估 Rerank 的效果

在下一篇文章中,我們會更深入探討如何評估檢索與排序的效果。這裡先給出幾個常見指標:

  • MRR(Mean Reciprocal Rank):平均 Reciprocal Rank,觀察正確答案出現在第幾名。
  • nDCG(Normalized Discounted Cumulative Gain):衡量排序位置與相關性的加權分數。
  • Precision@k / Recall@k:觀察前 k 筆結果的正確性與覆蓋率。

👉 明天我們將從這些指標開始,進一步討論如何衡量 檢索 + Rerank pipeline 的整體表現。


🔑 今日重點回顧

  1. Rerank 解決初步檢索排序不精確的問題
  2. Bi-Encoder 快,但準確度有限;Cross-Encoder 準,但計算開銷大
  3. 實務上常用 Bi-Encoder + Cross-Encoder 的兩階段設計

上一篇
Day 9 - RAG 進階優化-1:Hybrid Search
系列文
從 RAG 到 Agentic RAG:30 天打造本機智慧檢索系統10
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言